As the price-performance gap between dynamic random access memory (DRAM) and hard disk drives (HDDs) in computing systems continues to widen, non-volatile memory (NVM) solutions are increasingly filling that gap. Specifically, NVM in the form of solid state drives (SSDs) is creating a new I/O (input/output or IO) memory tier in today's computing systems. In addition, PCI Express (PCIe) connectivity in computing systems continues to rise, providing a high performance I/O interface (e.g., 1 GBps per lane for PCIe Gen3) to various devices, such as SSDs. For example, a single PCIe Gen3 SSD device with 8 lanes can deliver over 6 GBps of data access bandwidth. SSD providers, in an attempt to participate in this growing market opportunity, are introducing SSD products at a rapid pace. While there exists some standardization pertaining to the interoperability of PCIe SSDs (e.g., the NVM Express or NVMe standard), there remains a wide variety of implementations and drivers among today's SSD devices. Such SSD device variability can impact testing of SSD devices. For example, the test system mechanical and/or electrical interface for an SSD device under test (DUT) or a unit under test (UUT) might need to comply with the specific interface implemented in the UUT.
Unfortunately, legacy techniques for implementing test systems that accommodate the varying UUTs can be limited at least as pertaining to UUT insertion and removal while the test system is powered on. Such “hot plug” capability can specifically be limited in legacy implementations of test systems for PCIe SSDs and/or other SSDs using other high performance I/O networks and interfaces. For example, while PCIe devices and systems can be implemented so as to support hot plug capability for the devices, such devices and systems expect a device (e.g., endpoint device) to be present in all endpoint locations (e.g., card connectors or card slots) to be later used when the system is initialized. More specifically, the enumeration process invoked at system initialization (e.g., system boot) expects an endpoint device to be present in a given slot (e.g., bus number) at the time of initialization in order for any other hot plugged device to be accessible in that slot at a moment in time following completion of the enumeration process. One legacy approach to this limitation in test systems is to fill all the test slots with UUTs and/or dummy UUTs during system initialization. However, for test systems comprising a large number (e.g., 256, 512, etc.) of test slots for parallel testing, this can consume substantial computing and/or human resources, and/or hardware costs.
Techniques are therefore needed address the problem of efficiently implementing hot plug capable test slots in a test system, enabling the advancement of high performance I/O device test systems, non-volatile memory test systems, and other electronic systems. None of the aforementioned legacy approaches achieve the capabilities of the herein-disclosed techniques for initial enumeration of empty endpoint slots using endpoint emulation. Therefore, there is a need for improvements.